home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 August (Alt) / CHIP 2005-08.1.iso / program / guvenlik / syslinux-3.07.exe / Makefile < prev    next >
Encoding:
Makefile  |  2005-01-06  |  7.7 KB  |  258 lines

  1. ##  $Id: Makefile,v 1.119 2005/01/06 22:34:06 hpa Exp $
  2. ## -----------------------------------------------------------------------
  3. ##   
  4. ##   Copyright 1998-2005 H. Peter Anvin - All Rights Reserved
  5. ##
  6. ##   This program is free software; you can redistribute it and/or modify
  7. ##   it under the terms of the GNU General Public License as published by
  8. ##   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
  9. ##   Boston MA 02111-1307, USA; either version 2 of the License, or
  10. ##   (at your option) any later version; incorporated herein by reference.
  11. ##
  12. ## -----------------------------------------------------------------------
  13.  
  14. #
  15. # Main Makefile for SYSLINUX
  16. #
  17.  
  18. OSTYPE   = $(shell uname -msr)
  19. CC     = gcc
  20. INCLUDE  =
  21. CFLAGS   = -W -Wall -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64
  22. PIC      = -fPIC
  23. LDFLAGS  = -O2 -s
  24. AR     = ar
  25. RANLIB   = ranlib
  26.  
  27. NASM     = nasm -O99
  28. NINCLUDE = 
  29. BINDIR   = /usr/bin
  30. SBINDIR  = /sbin
  31. LIBDIR   = /usr/lib
  32. AUXDIR   = $(LIBDIR)/syslinux
  33. INCDIR   = /usr/include
  34.  
  35. PERL     = perl
  36.  
  37. VERSION  = $(shell cat version)
  38.  
  39. .c.o:
  40.     $(CC) $(INCLUDE) $(CFLAGS) -c $<
  41.  
  42. #
  43. # The BTARGET refers to objects that are derived from ldlinux.asm; we
  44. # like to keep those uniform for debugging reasons; however, distributors 
  45. # want to recompile the installers (ITARGET).
  46. # BOBJECTS and IOBJECTS are the same thing, except used for
  47. # installation, so they include objects that may be in subdirectories
  48. # with their own Makefiles.  Finally, there is a list of those
  49. # directories.
  50. #
  51. CSRC     = syslxmod.c gethostip.c
  52. NASMSRC  = $(wildcard *.asm)
  53. SOURCES = $(CSRC) *.h $(NASMSRC) *.inc
  54.  
  55. # _bin.c files required by both BTARGET and ITARGET installers
  56. BINFILES = bootsect_bin.c ldlinux_bin.c mbr_bin.c \
  57.        extlinux_bss_bin.c extlinux_sys_bin.c 
  58.  
  59. # syslinux.exe is BTARGET so as to not require everyone to have the
  60. # mingw suite installed
  61. BTARGET  = kwdhash.gen version.gen version.h \
  62.        ldlinux.bss ldlinux.sys ldlinux.bin \
  63.        pxelinux.0 mbr.bin isolinux.bin isolinux-debug.bin \
  64.        extlinux.bin extlinux.bss extlinux.sys
  65. BOBJECTS = $(BTARGET) dos/syslinux.com win32/syslinux.exe memdisk/memdisk
  66. BSUBDIRS = memdisk dos win32
  67. ITARGET  = copybs.com gethostip mkdiskimage
  68. IOBJECTS = $(ITARGET) mtools/syslinux unix/syslinux extlinux/extlinux
  69. ISUBDIRS = mtools unix extlinux sample com32
  70. DOCS     = COPYING NEWS README TODO BUGS *.doc sample menu com32
  71. OTHER    = Makefile bin2c.pl now.pl genhash.pl keywords findpatch.pl \
  72.        keytab-lilo.pl version version.pl sys2ansi.pl \
  73.        ppmtolss16 lss16toppm memdisk bin2hex.pl mkdiskimage.in
  74. OBSOLETE = pxelinux.bin
  75.  
  76. # Things to install in /usr/bin
  77. INSTALL_BIN   =    mtools/syslinux gethostip ppmtolss16 lss16toppm
  78. # Things to install in /sbin
  79. INSTALL_SBIN  = extlinux/extlinux
  80. # Things to install in /usr/lib/syslinux
  81. INSTALL_AUX   =    pxelinux.0 isolinux.bin isolinux-debug.bin \
  82.         dos/syslinux.com copybs.com memdisk/memdisk
  83. INSTALL_AUX_OPT = win32/syslinux.exe
  84.  
  85. # The DATE is set on the make command line when building binaries for
  86. # official release.  Otherwise, substitute a hex string that is pretty much
  87. # guaranteed to be unique to be unique from build to build.
  88. ifndef HEXDATE
  89. HEXDATE := $(shell $(PERL) now.pl ldlinux.asm pxelinux.asm isolinux.asm)
  90. endif
  91. ifndef DATE
  92. DATE    := $(HEXDATE)
  93. endif
  94. MAKE    += DATE=$(DATE) HEXDATE=$(HEXDATE)
  95.  
  96. #
  97. # NOTE: If you don't have the mingw compiler suite installed, you probably
  98. # want to remove win32 from this list; otherwise you're going to get an
  99. # error every time you try to build.
  100. #
  101.  
  102. all:    all-local
  103.     set -e ; for i in $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
  104.     $(MAKE) all-local
  105.     -ls -l $(BOBJECTS) $(IOBJECTS)
  106.  
  107. all-local: $(BTARGET) $(ITARGET) $(BINFILES)
  108.  
  109. installer: installer-local
  110.     set -e ; for i in $(ISUBDIRS); do $(MAKE) -C $$i all ; done
  111.     -ls -l $(BOBJECTS) $(IOBJECTS)
  112.  
  113. installer-local: $(ITARGET) $(BINFILES)
  114.  
  115. version.gen: version version.pl
  116.     $(PERL) version.pl $< $@ '%define'
  117.  
  118. version.h: version version.pl
  119.     $(PERL) version.pl $< $@ '#define'
  120.  
  121. kwdhash.gen: keywords genhash.pl
  122.     $(PERL) genhash.pl < keywords > kwdhash.gen
  123.  
  124. ldlinux.bin: ldlinux.asm kwdhash.gen version.gen
  125.     $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
  126.         -DMAP=ldlinux.map -l ldlinux.lst -o ldlinux.bin ldlinux.asm
  127.  
  128. pxelinux.bin: pxelinux.asm kwdhash.gen version.gen
  129.     $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
  130.         -DMAP=pxelinux.map -l pxelinux.lst -o pxelinux.bin pxelinux.asm
  131.  
  132. isolinux.bin: isolinux.asm kwdhash.gen version.gen checksumiso.pl
  133.     $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
  134.         -DMAP=isolinux.map -l isolinux.lst -o isolinux.bin isolinux.asm
  135.     $(PERL) checksumiso.pl isolinux.bin
  136.  
  137. # Special verbose version of isolinux.bin
  138. isolinux-debug.bin: isolinux.asm kwdhash.gen version.gen checksumiso.pl
  139.     $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
  140.         -DDEBUG_MESSAGES \
  141.         -DMAP=isolinux-debug.map -l isolinux-debug.lst \
  142.         -o isolinux-debug.bin isolinux.asm
  143.     $(PERL) checksumiso.pl $@
  144.  
  145. extlinux.bin: extlinux.asm kwdhash.gen version.gen
  146.     $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
  147.         -DMAP=extlinux.map -l extlinux.lst -o extlinux.bin extlinux.asm
  148.  
  149. pxelinux.0: pxelinux.bin
  150.     cp pxelinux.bin pxelinux.0
  151.  
  152. ldlinux.bss: ldlinux.bin
  153.     dd if=$< of=$@ bs=512 count=1
  154.  
  155. ldlinux.sys: ldlinux.bin
  156.     dd if=$< of=$@ bs=512 skip=1
  157.  
  158. extlinux.bss: extlinux.bin
  159.     dd if=$< of=$@ bs=512 count=1
  160.  
  161. extlinux.sys: extlinux.bin
  162.     dd if=$< of=$@ bs=512 skip=1
  163.  
  164. mbr.bin: mbr.asm
  165.     $(NASM) -f bin -l mbr.lst -o mbr.bin mbr.asm
  166.  
  167. mbr_bin.c: mbr.bin bin2c.pl
  168.     $(PERL) bin2c.pl syslinux_mbr < $< > $@
  169.  
  170. copybs.com: copybs.asm
  171.     $(NASM) -f bin -l copybs.lst -o copybs.com copybs.asm
  172.  
  173. bootsect_bin.c: ldlinux.bss bin2c.pl
  174.     $(PERL) bin2c.pl syslinux_bootsect < $< > $@
  175.  
  176. ldlinux_bin.c: ldlinux.sys bin2c.pl
  177.     $(PERL) bin2c.pl syslinux_ldlinux < $< > $@
  178.  
  179. extlinux_bss_bin.c: extlinux.bss bin2c.pl
  180.     $(PERL) bin2c.pl extlinux_bootsect < $< > $@
  181.  
  182. extlinux_sys_bin.c: extlinux.sys bin2c.pl
  183.     $(PERL) bin2c.pl extlinux_image < $< > $@
  184.  
  185. libsyslinux.a: bootsect_bin.o ldlinux_bin.o mbr_bin.o syslxmod.o
  186.     rm -f $@
  187.     $(AR) cq $@ $^
  188.     $(RANLIB) $@
  189.  
  190. $(LIB_SO): bootsect_bin.o ldlinux_bin.o syslxmod.o
  191.     $(CC) $(LDFLAGS) -shared -Wl,-soname,$(LIB_SONAME) -o $@ $^
  192.  
  193. gethostip.o: gethostip.c
  194.  
  195. gethostip: gethostip.o
  196.  
  197. mkdiskimage: mkdiskimage.in mbr.bin bin2hex.pl
  198.     $(PERL) bin2hex.pl < mbr.bin | cat mkdiskimage.in - > $@
  199.     chmod a+x $@
  200.  
  201. install: installer
  202.     mkdir -m 755 -p $(INSTALLROOT)$(BINDIR)
  203.     install -m 755 -c $(INSTALL_BIN) $(INSTALLROOT)$(BINDIR)
  204.     mkdir -m 755 -p $(INSTALLROOT)$(SBINDIR)
  205.     install -m 755 -c $(INSTALL_SBIN) $(INSTALLROOT)$(SBINDIR)
  206.     mkdir -m 755 -p $(INSTALLROOT)$(AUXDIR)
  207.     install -m 644 -c $(INSTALL_AUX) $(INSTALLROOT)$(AUXDIR)
  208.     -install -m 644 -c $(INSTALL_AUX_OPT) $(INSTALLROOT)$(AUXDIR)
  209.     $(MAKE) -C com32 install
  210.  
  211. install-lib: installer
  212.  
  213. install-all: install install-lib
  214.  
  215. local-tidy:
  216.     rm -f *.o *_bin.c stupid.* patch.offset
  217.     rm -f *.lst *.map
  218.     rm -f $(OBSOLETE)
  219.  
  220. tidy: local-tidy
  221.     set -e ; for i in $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
  222.  
  223. local-clean:
  224.     rm -f $(ITARGET)
  225.  
  226. clean: local-tidy local-clean
  227.     set -e ; for i in $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
  228.  
  229. dist: tidy
  230.     for dir in . sample memdisk ; do \
  231.         ( cd $$dir && rm -f *~ \#* core ) ; \
  232.     done
  233.  
  234. local-spotless:
  235.     rm -f $(BTARGET) .depend *.so.*
  236.  
  237. spotless: local-clean dist local-spotless
  238.     set -e ; for i in $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
  239.  
  240. .depend:
  241.     rm -f .depend
  242.     for csrc in $(CSRC) ; do $(CC) $(INCLUDE) -MM $$csrc >> .depend ; done
  243.     for nsrc in $(NASMSRC) ; do $(NASM) -DDEPEND $(NINCLUDE) -o `echo $$nsrc | sed -e 's/\.asm/\.bin/'` -M $$nsrc >> .depend ; done
  244.  
  245. local-depend:
  246.     rm -f .depend
  247.     $(MAKE) .depend
  248.  
  249. depend: local-depend
  250.     $(MAKE) -C memdisk depend
  251.  
  252. # Hook to add private Makefile targets for the maintainer.
  253. -include Makefile.private
  254.  
  255. # Include dependencies file
  256. -include .depend
  257.